Computers with so-called multimedia capabilities offer the user the ability to process and display a variety of different types of information. Some computers within this general category have the ability to display a video presentation, as well as graphical information. In the context of the present invention, the term "graphic" refers to computer-generated pixel data that is displayed on a computer's monitor, whereas the term "video" refers to pixel data that is originally generated from an external source, such as an NTSC broadcast or a video tape, although it could be currently stored within the computer. Typically, the video presentation might be displayed in a window within the display area of the monitor. The frame of the window represents graphical information, whereas the contents of the window comprise the video presentation itself. In addition to the frame for the video presentation, other graphical elements might appear on the display screen. For example, additional windows, icons, and menu bars may be present on the screen.
For those portions of the display in which the video information appears, the display system determines whether the video data or the graphical data is to be displayed, based on color keying information contained within the display data, typically the graphical data. Normally, the video information will be displayed, so that the user can view an incoming video presentation in real time. However, if the user actuates a pulldown menu which overlaps the video window, for example, it is preferable to have the graphical data, i.e., the menu, displayed in the overlapping area, in lieu of the video information. As such, both the graphical and video data must be presented to the display system from memory, so that it can choose the proper information to display.
In the past, the video data and the graphical data were stored in separate memories, from which each could be simultaneously retrieved and presented to the display system. For more efficient memory utilization, and to reduce cost, it is desirable to employ a single memory buffer to store both the graphical and video information. For example, in one implementation of such an arrangement, a single memory device can be divided into three frame buffers. One of the frame buffers stores the graphical information, while the other two buffers store alternate frames of the video data. An incoming video frame is stored in one of the video buffers, while the immediately preceding frame is retrieved from the other video buffer and forwarded to the display.
Although the use of a single memory reduces the costs associated with storing graphical and video information, it also presents practical problems with respect to the retrieval of information. More particularly, in the portion of the display in which both the video and graphical data are presented to the display system, twice as much data must be retrieved from the memory. In other words, the memory must operate with sufficient speed, i.e., have enough bandwidth, to supply all of the data at the required rate. Otherwise, a single memory device cannot be practically employed to store both the graphical and the video information.
Another consideration associated with the use of a single memory for both graphical and video data relates to the addressing of the memory to retrieve the data. For maximum memory utilization, many computer systems store graphical data in a packed pixel format. In this approach, pixel data for a given scan line begins at the first byte following the byte containing the last pixel data for the immediately preceding line. In other words, there are no "unused addresses" in the memory between the data bytes for adjacent scan lines. This approach provides the advantage that there is a consistent, readily determined address offset between any two pixels of the display.
Video data might not be stored in the same manner, however. Generally speaking, it is desirable to store video data for a given scan line as a contiguous block, and not divide it over natural byte boundaries, such as different rows of the memory, for example. Thus, if the amount of data for an integer number of scan lines is not equal to the length one row of data in the memory, there will be unused address locations in each row of the video buffer. Because of this, the address offset between various pixels of the video information will not be consistent, making the retrieval of video data by the central processing unit of the computer more difficult.
A further consideration when both video and graphical information is displayed relates to the processing of data which defmes each type of information. Typically, a color imaging system includes a color look-up table (CLUT) that maps pixel data into red, green and blue (RGB) component values for controlling the display monitor to generate desired colors. The CLUT is designed in accordance with the format of the pixel data, as well as the particular color palette designated by a user or an application program. If the video data is not in the same format as the graphical pixel data, the resulting video display can be adversely affected. For example, if the video data is in a format which employs 16 bits per pixel, but the graphical data only contains 8 bits per pixel, one-half of the color information for the video presentation will be lost if it is processed in a CLUT that is based on an 8-bit per pixel format.
Accordingly, it is desirable to provide a computer system in which video and graphic data can be stored in the same memory without the need to increase the bandwidth capacity of the memory, and to provide an address translator that enables both video data and graphical data to be easily retrieved from the memory. It is further desirable to provide a color processing system in which the video data is not constrained by the format of the graphical data.